library(covid19census)
library(dplyr)

Attaching package: ‘dplyr’

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)
library(broom)
library(psych)

Attaching package: ‘psych’

The following objects are masked from ‘package:ggplot2’:

    %+%, alpha
library(stringr)
library(DataExplorer)
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 methods overwritten by 'htmltools':
  method               from         
  print.html           tools:rstudio
  print.shiny.tag      tools:rstudio
  print.shiny.tag.list tools:rstudio
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio
library(plotly)

Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout
theme_set(theme_bw())
t_us <-  covid19census::getus_tests()
Data of tests up to 2020-04-23 successfully imported!
names(t_us)
 [1] "date"                  "state"                 "abbr"                 
 [4] "positive"              "negative"              "pending"              
 [7] "hospitalized_curr"     "hospitalized_cumul"    "icu_curr"             
[10] "icu_cumul"             "ventilator_curr"       "ventilator_cumul"     
[13] "recovered"             "hash"                  "date_checked"         
[16] "death"                 "fips"                  "death_increase"       
[19] "hospitalized_increase" "negative_increase"     "positive_increase"    
[22] "total_test_increase"  
t_us %>% 
  select(date, state, positive, negative, pending) %>% 
  pivot_longer(cols = c("positive", "negative", "pending"), names_to = "det_tests") %>% 
  
  ggplot(aes(date, log2(value), colour = det_tests)) +
    geom_line() +
    facet_wrap(vars(state)) +
    scale_x_date(guide = guide_axis(check.overlap = TRUE, angle = 45)) +
    theme(legend.position = "top",
        legend.title = element_blank()) 

NA
NA
NA

WHO ratio positive/total to talk about reopening

t_us %>% 
  mutate(ratio_pos = positive/(positive + negative)) %>% 
  filter(date == max(date)) %>% 
  
  ggplot(aes(reorder(state, ratio_pos), ratio_pos)) +
    geom_col() +
    scale_x_discrete(guide = guide_axis(check.overlap = TRUE, angle = 90)) +
    labs(x = NULL,
         y = "positive/(positive + negative)",
         title = "Probability of a positive test") +
    theme(legend.position = "top",
        legend.title = element_blank())

t_us %>%
  select(date,
         state,
         hospitalized_curr,
         hospitalized_cumul
         # icu_curr,
         # icu_cumul
         
         ) %>%
  pivot_longer(
    cols = c(
      "hospitalized_curr",
      "hospitalized_cumul"
      # "icu_curr",
      # "icu_cumul"
    ),
    names_to = "det_tests"
  ) %>%
  
  ggplot(aes(date, log2(value), colour = det_tests)) +
  geom_line() +
  facet_wrap(vars(state)) +
  scale_x_date(guide = guide_axis(check.overlap = TRUE, angle = 45)) +
  theme(legend.position = "top",
        legend.title = element_blank())

Same states have hospitalized current but not hospitalized cumulative and vicevera ????

** Possible different meaning of variables depending on the state **

t_us %>%
  select(date,
         state,
         # hospitalized_curr,
         # hospitalized_cumul
         # icu_curr,
         # icu_cumul
         "ventilator_curr",
         "ventilator_cumul"
         
         ) %>%
  pivot_longer(
    cols = c(
      # "hospitalized_curr",
      # "hospitalized_cumul"
        "ventilator_curr",
         "ventilator_cumul"
    ),
    names_to = "det_tests"
  ) %>%
  
  ggplot(aes(date, log2(value), colour = det_tests)) +
  geom_line() +
  facet_wrap(vars(state)) +
  scale_x_date(guide = guide_axis(check.overlap = TRUE, angle = 45)) +
  theme(legend.position = "top",
        legend.title = element_blank())
t_us %>%
  select(date,
         state,
         # hospitalized_curr,
         # hospitalized_cumul
         icu_curr,
         icu_cumul
         
         ) %>%
  pivot_longer(
    cols = c(
      # "hospitalized_curr",
      # "hospitalized_cumul"
      "icu_curr",
      "icu_cumul"
    ),
    names_to = "det_tests"
  ) %>%
  
  ggplot(aes(date, log2(value), colour = det_tests)) +
  geom_line() +
  facet_wrap(vars(state)) +
  scale_x_date(guide = guide_axis(check.overlap = TRUE, angle = 45)) +
  theme(legend.position = "top",
        legend.title = element_blank())

Lets see some totals

ggplotly(
t_us %>% 
  filter(date == max(date)) %>% 
  select(-hash, -date_checked, -fips) %>%
  pivot_longer(cols = positive:total_test_increase, names_to = "metric", values_to = "value") %>% 
  ggplot(aes(state, value)) +
    geom_col() +
    facet_wrap(vars(metric), scales = "free_y", ncol = 1) + 
    scale_x_discrete(guide = guide_axis( angle = 90)),
    height = 2000,
    width = 600
)

NA
LS0tCnRpdGxlOiAiQ2hlY2tzIG9uIHRlc3RpbmciCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCgpgYGB7cn0KbGlicmFyeShjb3ZpZDE5Y2Vuc3VzKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHRpZHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoYnJvb20pCmxpYnJhcnkocHN5Y2gpCmxpYnJhcnkoc3RyaW5ncikKbGlicmFyeShEYXRhRXhwbG9yZXIpCmxpYnJhcnkocGxvdGx5KQp0aGVtZV9zZXQodGhlbWVfYncoKSkKYGBgCgoKYGBge3J9CnRfdXMgPC0gIGNvdmlkMTljZW5zdXM6OmdldHVzX3Rlc3RzKCkKYGBgCgpgYGB7ciB3YXJuaW5nPUZBTFNFfQpuYW1lcyh0X3VzKQpgYGAKCgpgYGB7ciwgd2FybmluZz1GQUxTRSwgZmlnLmhlaWdodD01LCBmaWcud2lkdGg9NX0KdF91cyAlPiUgCiAgc2VsZWN0KGRhdGUsIHN0YXRlLCBwb3NpdGl2ZSwgbmVnYXRpdmUsIHBlbmRpbmcpICU+JSAKICBwaXZvdF9sb25nZXIoY29scyA9IGMoInBvc2l0aXZlIiwgIm5lZ2F0aXZlIiwgInBlbmRpbmciKSwgbmFtZXNfdG8gPSAiZGV0X3Rlc3RzIikgJT4lIAogIAogIGdncGxvdChhZXMoZGF0ZSwgbG9nMih2YWx1ZSksIGNvbG91ciA9IGRldF90ZXN0cykpICsKICAgIGdlb21fbGluZSgpICsKICAgIGZhY2V0X3dyYXAodmFycyhzdGF0ZSkpICsKICAgIHNjYWxlX3hfZGF0ZShndWlkZSA9IGd1aWRlX2F4aXMoY2hlY2sub3ZlcmxhcCA9IFRSVUUsIGFuZ2xlID0gNDUpKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCkpIAoKYGBgCldITyByYXRpbyBwb3NpdGl2ZS90b3RhbCB0byB0YWxrIGFib3V0IHJlb3BlbmluZwoKCmBgYHtyLCBtZXNzYWdlPUZBTFNFfQp0X3VzICU+JSAKICBtdXRhdGUocmF0aW9fcG9zID0gcG9zaXRpdmUvKHBvc2l0aXZlICsgbmVnYXRpdmUpKSAlPiUgCiAgZmlsdGVyKGRhdGUgPT0gbWF4KGRhdGUpKSAlPiUgCiAgCiAgZ2dwbG90KGFlcyhyZW9yZGVyKHN0YXRlLCByYXRpb19wb3MpLCByYXRpb19wb3MpKSArCiAgICBnZW9tX2NvbCgpICsKICAgIHNjYWxlX3hfZGlzY3JldGUoZ3VpZGUgPSBndWlkZV9heGlzKGNoZWNrLm92ZXJsYXAgPSBUUlVFLCBhbmdsZSA9IDkwKSkgKwogICAgbGFicyh4ID0gTlVMTCwKICAgICAgICAgeSA9ICJwb3NpdGl2ZS8ocG9zaXRpdmUgKyBuZWdhdGl2ZSkiLAogICAgICAgICB0aXRsZSA9ICJQcm9iYWJpbGl0eSBvZiBhIHBvc2l0aXZlIHRlc3QiKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCkpCmBgYAoKCmBgYHtyIHdhcm5pbmc9RkFMU0UsIGZpZy5oZWlnaHQ9NSwgZmlnLndpZHRoPTV9CnRfdXMgJT4lCiAgc2VsZWN0KGRhdGUsCiAgICAgICAgIHN0YXRlLAogICAgICAgICBob3NwaXRhbGl6ZWRfY3VyciwKICAgICAgICAgaG9zcGl0YWxpemVkX2N1bXVsCiAgICAgICAgICMgaWN1X2N1cnIsCiAgICAgICAgICMgaWN1X2N1bXVsCiAgICAgICAgIAogICAgICAgICApICU+JQogIHBpdm90X2xvbmdlcigKICAgIGNvbHMgPSBjKAogICAgICAiaG9zcGl0YWxpemVkX2N1cnIiLAogICAgICAiaG9zcGl0YWxpemVkX2N1bXVsIgogICAgICAjICJpY3VfY3VyciIsCiAgICAgICMgImljdV9jdW11bCIKICAgICksCiAgICBuYW1lc190byA9ICJkZXRfdGVzdHMiCiAgKSAlPiUKICAKICBnZ3Bsb3QoYWVzKGRhdGUsIGxvZzIodmFsdWUpLCBjb2xvdXIgPSBkZXRfdGVzdHMpKSArCiAgZ2VvbV9saW5lKCkgKwogIGZhY2V0X3dyYXAodmFycyhzdGF0ZSkpICsKICBzY2FsZV94X2RhdGUoZ3VpZGUgPSBndWlkZV9heGlzKGNoZWNrLm92ZXJsYXAgPSBUUlVFLCBhbmdsZSA9IDQ1KSkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSkKCmBgYApTYW1lIHN0YXRlcyBoYXZlIGhvc3BpdGFsaXplZCBjdXJyZW50IGJ1dCBub3QgaG9zcGl0YWxpemVkIGN1bXVsYXRpdmUgYW5kIHZpY2V2ZXJhID8/Pz8KCioqIFBvc3NpYmxlIGRpZmZlcmVudCBtZWFuaW5nIG9mIHZhcmlhYmxlcyBkZXBlbmRpbmcgb24gdGhlIHN0YXRlICAqKgoKCmBgYHtyIHdhcm5pbmc9RkFMU0UsIGZpZy5oZWlnaHQ9NSwgZmlnLndpZHRoPTV9CnRfdXMgJT4lCiAgc2VsZWN0KGRhdGUsCiAgICAgICAgIHN0YXRlLAogICAgICAgICAjIGhvc3BpdGFsaXplZF9jdXJyLAogICAgICAgICAjIGhvc3BpdGFsaXplZF9jdW11bAogICAgICAgICAjIGljdV9jdXJyLAogICAgICAgICAjIGljdV9jdW11bAogICAgICAgICAidmVudGlsYXRvcl9jdXJyIiwKICAgICAgICAgInZlbnRpbGF0b3JfY3VtdWwiCiAgICAgICAgIAogICAgICAgICApICU+JQogIHBpdm90X2xvbmdlcigKICAgIGNvbHMgPSBjKAogICAgICAjICJob3NwaXRhbGl6ZWRfY3VyciIsCiAgICAgICMgImhvc3BpdGFsaXplZF9jdW11bCIKICAgICAgICAidmVudGlsYXRvcl9jdXJyIiwKICAgICAgICAgInZlbnRpbGF0b3JfY3VtdWwiCiAgICApLAogICAgbmFtZXNfdG8gPSAiZGV0X3Rlc3RzIgogICkgJT4lCiAgCiAgZ2dwbG90KGFlcyhkYXRlLCBsb2cyKHZhbHVlKSwgY29sb3VyID0gZGV0X3Rlc3RzKSkgKwogIGdlb21fbGluZSgpICsKICBmYWNldF93cmFwKHZhcnMoc3RhdGUpKSArCiAgc2NhbGVfeF9kYXRlKGd1aWRlID0gZ3VpZGVfYXhpcyhjaGVjay5vdmVybGFwID0gVFJVRSwgYW5nbGUgPSA0NSkpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCkpCgpgYGAKYGBge3Igd2FybmluZz1GQUxTRSwgZmlnLmhlaWdodD01LCBmaWcud2lkdGg9NX0KdF91cyAlPiUKICBzZWxlY3QoZGF0ZSwKICAgICAgICAgc3RhdGUsCiAgICAgICAgICMgaG9zcGl0YWxpemVkX2N1cnIsCiAgICAgICAgICMgaG9zcGl0YWxpemVkX2N1bXVsCiAgICAgICAgIGljdV9jdXJyLAogICAgICAgICBpY3VfY3VtdWwKICAgICAgICAgCiAgICAgICAgICkgJT4lCiAgcGl2b3RfbG9uZ2VyKAogICAgY29scyA9IGMoCiAgICAgICMgImhvc3BpdGFsaXplZF9jdXJyIiwKICAgICAgIyAiaG9zcGl0YWxpemVkX2N1bXVsIgogICAgICAiaWN1X2N1cnIiLAogICAgICAiaWN1X2N1bXVsIgogICAgKSwKICAgIG5hbWVzX3RvID0gImRldF90ZXN0cyIKICApICU+JQogIAogIGdncGxvdChhZXMoZGF0ZSwgbG9nMih2YWx1ZSksIGNvbG91ciA9IGRldF90ZXN0cykpICsKICBnZW9tX2xpbmUoKSArCiAgZmFjZXRfd3JhcCh2YXJzKHN0YXRlKSkgKwogIHNjYWxlX3hfZGF0ZShndWlkZSA9IGd1aWRlX2F4aXMoY2hlY2sub3ZlcmxhcCA9IFRSVUUsIGFuZ2xlID0gNDUpKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF9ibGFuaygpKQoKYGBgCgoKCkxldHMgc2VlIHNvbWUgdG90YWxzCmBgYHtyIHdhcm5pbmc9RkFMU0UsIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD02fQpnZ3Bsb3RseSgKdF91cyAlPiUgCiAgZmlsdGVyKGRhdGUgPT0gbWF4KGRhdGUpKSAlPiUgCiAgc2VsZWN0KC1oYXNoLCAtZGF0ZV9jaGVja2VkLCAtZmlwcykgJT4lCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBwb3NpdGl2ZTp0b3RhbF90ZXN0X2luY3JlYXNlLCBuYW1lc190byA9ICJtZXRyaWMiLCB2YWx1ZXNfdG8gPSAidmFsdWUiKSAlPiUgCiAgZ2dwbG90KGFlcyhzdGF0ZSwgdmFsdWUpKSArCiAgICBnZW9tX2NvbCgpICsKICAgIGZhY2V0X3dyYXAodmFycyhtZXRyaWMpLCBzY2FsZXMgPSAiZnJlZV95IiwgbmNvbCA9IDEpICsgCiAgICBzY2FsZV94X2Rpc2NyZXRlKGd1aWRlID0gZ3VpZGVfYXhpcyggYW5nbGUgPSA5MCkpLAogICAgaGVpZ2h0ID0gMjAwMCwKICAgIHdpZHRoID0gNjAwCikKCmBgYAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==